package com.zhongkun.datahome.framework.redis;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 方法的参数需要实现RedisLockKey接口
 * 默认是锁方法
 * created 2018/10/31
 *
 * @author gaoxin
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RedisLock {

    /**
     * 超时时间 单位：秒
     */
    long timeout() default 10;

    /**
     * 是否需要重试，默认不重试，拿不到锁的直接抛出异常；幂等的方法建议重试
     */
    boolean retry() default false;

    /**
     * 锁的名字，如果为空，则为类+方法
     */
    String lockName() default "";
}
